package cn.yy.cloudpay.util;

import android.content.Context;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;

import org.apache.log4j.Level;

import java.io.File;
import java.util.Date;

import de.mindpipe.android.logging.log4j.LogConfigurator;

/**
 * Created by Administrator on 2017/3/23 0023.
 */
public class ConfigureLog4J {
    //日志级别优先度从高到低:OFF(关闭),FATAL(致命),ERROR(错误),WARN(警告),INFO(信息),DEBUG(调试),ALL(打开所有的日志，我的理解与DEBUG级别好像没有什么区别得)
//Log4j建议只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG这五个级别。
    // "yyyy-MM-dd");// 日志的输出格式

    public static void configure(Context context) {
        try{
            final LogConfigurator logConfigurator = new LogConfigurator();
            Date nowtime = new Date();
            StringBuilder sb = new StringBuilder();
            File file = context.getExternalCacheDir();
            if (file != null) {
                sb.append(file.getAbsolutePath()).append(File.separator);
            } else {
                sb.append(Environment.getExternalStorageDirectory().getPath()).append("/Android/data/").append(context.getPackageName())
                        .append("/cache/").append(File.separator).toString();
            }
            String  mSavePath = sb.toString();
            if(StringUtil.isEmpty(mSavePath)){
                return;
            }
            String fileName = mSavePath + File.separator + "pospaylog"+ File.separator + "log.log";
            //设置文件名
            logConfigurator.setFileName(fileName);
            //设置root日志输出级别 默认为DEBUG
            logConfigurator.setRootLevel(Level.DEBUG);
            // 设置日志输出级别
            logConfigurator.setLevel("org.apache", Level.INFO);
            //设置 输出到日志文件的文字格式 默认 %d %-5p [%c{2}]-[%L] %m%n
            logConfigurator.setFilePattern("%d %-5p [%c{2}]-[%L] %m%n");
            //设置输出到控制台的文字格式 默认%m%n
            logConfigurator.setLogCatPattern("%m%n");
            //设置总文件大小
            logConfigurator.setMaxFileSize(1024 * 1024 * 5);
            //设置最大产生的文件个数
            logConfigurator.setMaxBackupSize(1);
            //设置所有消息是否被立刻输出 默认为true,false 不输出
            logConfigurator.setImmediateFlush(true);
            //是否本地控制台打印输出 默认为true ，false不输出
            logConfigurator.setUseLogCatAppender(true);
            //设置是否启用文件附加,默认为true。false为覆盖文件
            logConfigurator.setUseFileAppender(true);
            //设置是否重置配置文件，默认为true
            logConfigurator.setResetConfiguration(true);
            //是否显示内部初始化日志,默认为false
            logConfigurator.setInternalDebugging(false);

            logConfigurator.configure();
        }catch (Exception ex){
            Log.e("ConfigLog4J","日志异常",ex);
            Toast.makeText(context,"日志初始化异常："+ex.getLocalizedMessage(),Toast.LENGTH_LONG);
        }
    }
}
